tg-me.com/cpp_geek/295
Last Update:
π§΅ RAII β Π³Π»Π°Π²Π½ΡΠΉ ΡΠ΅ΠΊΡΠ΅Ρ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠ³ΠΎ ΠΊ ΡΡΠ΅ΡΠΊΠ°ΠΌ C++ ΠΊΠΎΠ΄Π°
ΠΡΠΈΠ²Π΅Ρ! Π‘Π΅Π³ΠΎΠ΄Π½Ρ Ρ
ΠΎΡΡ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΎ ΡΠ΅Ρ
Π½ΠΈΠΊΠ΅, Π±Π΅Π· ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΠΈ ΡΡΡΠΎΠΉΡΠΈΠ²ΡΠΉ C++ ΠΊΠΎΠ΄ β ΡΡΠΎ RAII (Resource Acquisition Is Initialization).
RAII β ΡΡΠΎ ΠΈΠ΄ΠΈΠΎΠΌΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π·Π°Ρ
Π²Π°Ρ ΡΠ΅ΡΡΡΡΠ° (ΡΠ°ΠΉΠ», ΡΠΎΠΊΠ΅Ρ, ΠΏΠ°ΠΌΡΡΡ, ΠΌΡΡΡΠ΅ΠΊΡ) ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ β Π² Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ΅. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ ΡΠ΅ΡΡΡΡΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΡ
.
ΠΡΠΈΠΌΠ΅Ρ:
#include <fstream>
void saveData(const std::string& filename) {
std::ofstream file(filename); // ΠΎΡΠΊΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Π°
if (!file.is_open())
throw std::runtime_error("Cannot open file");
file << "some data"; // ΡΠ°ΠΉΠ» Π·Π°ΠΊΡΠΎΠ΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ
}
RAII Π΄Π΅Π»Π°Π΅Ρ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄:
β ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ ΠΊ ΡΡΠ΅ΡΠΊΠ°ΠΌ
β Π£ΡΡΠΎΠΉΡΠΈΠ²ΡΠΌ ΠΊ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌ
β ΠΡΠ³ΠΊΠΈΠΌ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ
π‘ Π‘ΠΎΠ²Π΅Ρ: Π²ΡΠ΅Π³Π΄Π° ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°ΠΉ "ΡΡΡΠ½ΡΠ΅" ΡΠ΅ΡΡΡΡΡ Π² ΠΎΠ±ΡΡΡΠΊΠΈ β
std::unique_ptr
, std::lock_guard
, std::ofstream
, std::thread
ΠΈ Ρ.Π΄.β‘οΈ @cpp_geek
BY C++ geek

Share with your friend now:
tg-me.com/cpp_geek/295